package com.huaji.learn.ui;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.huaji.learn.R;
import com.huaji.learn.model.NoteModel;
import com.huaji.learn.repository.NoteRepository;
import com.huaji.learn.ui.view.NoteDetailView;

/**
 * 笔记详情页面的Activity
 */
public class AddNoteActivity extends AppCompatActivity {
    /**
     * 笔记model
     */
    private NoteModel note;
    /**
     * 数据仓库
     */
    private NoteRepository repository;
    /**
     * 笔记详情的控件
     */
    private NoteDetailView noteView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_note);

        // 先查到控件
        noteView = findViewById(R.id.note_detail_add);
        // 初始化数据仓库
        repository = new NoteRepository(this);

        // 添加点击事件
        noteView.deleteButtonOnClick(v -> this.btnDelOnClick(v));
        noteView.saveButtonOnClick(v -> this.btnSaveOnClick(v));

        // 先初始化一个默认的笔记对象
        this.note = new NoteModel();
        // 刚刚初始化的笔记是空的，因此当前页面应该是新建页面
        this.setTitle("新建");
        // 获取传递过来的参数
        Intent intent = getIntent();
        if (intent != null && intent.hasExtra("ID")) {
            // 获取传递过来的笔记ID
            int noteId = intent.getIntExtra("ID", -1);

            // 不为-1，则说明是单击列表项跳转到这个页面
            if (noteId != -1) {
                // 查到笔记对象
                this.note = repository.queryNote(noteId);
                // 笔记对象有值说明是需要查看详情
                this.setTitle("详情");
            }
        }

        // 给控件赋值
        this.noteView.setNote(this.note);

    }

    /**、
     * 删除按钮点击事件
     * @param view
     */
    void btnDelOnClick(View view) {
        // 如果成功删除就给提示，然后随机查一个值并赋值给当前页面
        if (repository.deleteNote(note.getId()) > 0) {
            Toast.makeText(view.getContext(), "删除成功", Toast.LENGTH_SHORT).show();
            try {
                this.note = repository.queryNoteRandom();
                this.noteView.setNote(this.note);
            }
            catch (Exception ex){
                ex.printStackTrace();
            }
        } else {
            Toast.makeText(view.getContext(), "删除失败", Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 保存按钮事件
     * @param view
     */
    void btnSaveOnClick(View view) {
        // 从控件获取值
        this.note = noteView.getNote();
        // ID小于0证明是未保存的笔记，插入，否则修改
        if (this.note.getId() < 0) {
            if (repository.insertNote(this.note) > 0) {
                Toast.makeText(view.getContext(), "新建成功", Toast.LENGTH_SHORT).show();
            }
            else {
                Toast.makeText(view.getContext(), "新建失败", Toast.LENGTH_SHORT).show();
            }
        } else {
            if (repository.updateNote(this.note) > 0) {
                Toast.makeText(view.getContext(), "修改成功", Toast.LENGTH_SHORT).show();
            }
            else {
                Toast.makeText(view.getContext(), "修改失败", Toast.LENGTH_SHORT).show();
            }
        }
    }

}